// RUN: clang-cc -fsyntax-only %s > %t 2>&1 &&

#define M1(x) x

// RUN: grep ":6:12: note: instantiated from:" %t &&
#define M2 1;

void foo() {
 // RUN: grep ":10:2: warning: expression result unused" %t &&
 M1(
 // RUN: grep ":12:5: note: instantiated from:" %t &&
    M2)
}

// RUN: grep ":16:11: note: instantiated from:" %t &&
#define A 1
// RUN: grep ":18:11: note: instantiated from:" %t &&
#define B A
// RUN: grep ":20:11: note: instantiated from:" %t &&
#define C B

void bar() {
  // RUN: grep  ":24:3: warning: expression result unused" %t
  C;
}

